import request from '@/config/axios'
import type { Dayjs } from 'dayjs'

/** 会员用户信息 */
export interface User {
  id: number // 编号
  mobile: string // 手机号
  password?: string // 密码
  status?: number // 状态
  registerIp?: string // 注册 IP
  registerTerminal: number // 注册终端
  loginIp: string // 最后登录IP
  loginDate: string | Dayjs // 最后登录时间
  nickname?: string // 用户昵称
  avatar?: string // 头像
  name: string // 真实名字
  sex: number // 用户性别
  areaId: number // 所在地
  birthday: string | Dayjs // 出生日期
  mark: string // 会员备注
  point?: number // 积分
  tagIds: string // 用户标签编号列表，以逗号分隔
  levelId: number // 等级编号
  experience?: number // 经验
  groupId: number // 用户分组编号
  memberId: number // 会员id编号
  membershipName: string // 会员名称
  memberExpirationDate: string | Dayjs | Date // 会员到期时间
  memberPurchaseDate: string | Dayjs | Date // 会员购买时间
  accumulatedQuantity: number // 累计购买会员数量
  remakes: string // 备注
  remainingConsultationFrequency?: number // 剩余咨询次数
  remainingRegistrationsFrequency?: number // 剩余报名次数
  consultationsTotalNumber?: number // 咨询总次数
  registrationsTotalNumber?: number // 报名总次数
  updateTime: string | Dayjs | Date // 更新时间
  createTime: string | Dayjs | Date // 创建时间
}

// 会员用户 API
export const UserApi = {
  // 查询会员用户分页
  getUserPage: async (params: any) => {
    return await request.get({ url: `/member/user/page`, params })
  },

  // 查询会员用户详情
  getUser: async (id: number) => {
    return await request.get({ url: `/member/user/get?id=` + id })
  },

  // 新增会员用户
  createUser: async (data: User) => {
    return await request.post({ url: `/member/user/create`, data })
  },

  // 修改会员用户
  updateUser: async (data: User) => {
    return await request.put({ url: `/member/user/update`, data })
  },

  // 删除会员用户
  deleteUser: async (id: number) => {
    return await request.delete({ url: `/member/user/delete?id=` + id })
  },

  /** 批量删除会员用户 */
  deleteUserList: async (ids: number[]) => {
    return await request.delete({ url: `/member/user/delete-list?ids=${ids.join(',')}` })
  },

  // 导出会员用户 Excel
  exportUser: async (params) => {
    return await request.download({ url: `/member/user/export-excel`, params })
  },

  // 更新用户备注信息
  updateRemark: async (data: Pick<User, 'id' | 'remakes'>) => {
    return await request.put({ url: '/member/user/update-remake', data })
  },

  // 更新会员状态
  updateStatus: async (data: Pick<User, 'id' | 'status'>) => {
    return await request.put({ url: '/member/user/update-status', data })
  },

  // 设置会员等级
  setMember: async (data: Pick<User, 'id' | 'memberId'>) => {
    return await request.put({ url: '/member/user/update-memberLever', data })
  },

  // 设置会员权益
  setMemberRights: async (
    data: Pick<
      User,
      'id' | 'memberId' | 'remainingConsultationFrequency' | 'remainingRegistrationsFrequency'
    > & { periodValidity: number }
  ) => {
    return await request.put({ url: '/member/user/update-memberInformation', data })
  }
}
